////////////////////////////////////////////////////////////////////
// File:				Renderer.h
// Original Author:		Gerald Leung (GL)
// Creation Date:		Tue May 06 22:21:00 PST 2008
// Spec:				http://www.csua.berkeley.edu/~gerald/
// Purpose:				CRenderer interface using GLUT
////////////////////////////////////////////////////////////////////
// Author:				Gerald Leung
// Creation Date:		Friday, February 05, 2010 7:40:26 PM
////////////////////////////////////////////////////////////////////
#ifndef				RENDERER_H
#define				RENDERER_H
// Renderer class to encapsulate GLUT (mostly encapsulate, anyway..)
#include			<iostream>
#include			<string>
#include			<sstream>
#include			<vector>
#include			<GL/glut.h>
// Interface includes
#include			"Batch.h"
#include			"BatchViewController.h" 

using				namespace			std;
class				CRenderer
{
private:
			int		nArgc;
	// vector<string>	sArgs;
			string	strArgs;
	unsigned int	width, height;
	//		Scene	*psScene;
			GLint	shademodel;
	BatchViewController	bvc;
			Batch	*pBatch;

	// Only use constructor after commandlines
					CRenderer			();
public:
			int		lastx;
			int		lasty;
			bool	Buttons[3];
			float	zoom, rotx, roty, tx, ty;

					CRenderer			(int, char* []);
					~CRenderer			();
			void	Idle				();
			void	Display				();
			void	Motion				(int x, int y);
			void	Mouse				(int btn, int state, int x, int y);
			void	InputKBSpecial		(int, int, int);
			void	InputKB				(unsigned char, int, int);
			void	Reshape				(int, int);
			void	PrintArgs			();
};

#endif				// RENDERER_H